package MatdisscalcGUI;

import java.util.Scanner;
import matdiscalc.MatrixChecker;

/**
 * Cara make: Cek doItung
 * @author Iqbal, Edja, Mufid
 */

public class Utama {
    public static void main(String[] args) {
        MatrixChecker matcek = null;
        System.out.println("Masukkan matriks:");
        
        // ===============================
        // BAGIAN SATU --- PARSING MATRIKS
        // ===============================
		
		// Tampilkan petunjuk duluu...
		System.out.println("Contoh matriks yang valid:");
		System.out.println("0 0 1 1");
		System.out.println("0 1 0 1");
		System.out.println("0 1 0 1");
		System.out.println("1 1 0 1");
		System.out.println("-------");
		System.out.println("Masukkan square matrix, dipisahkan dengan spasi untuk kolom dan newline (ENTER) untuk baris");
        try {
            // Memproses matriks pertama
            // ingat bahwa matriks akan selalu square matrix
            Scanner sken = new Scanner(System.in);
            // Kalau mau inputnya file, ganti aja scanner jadi io reader,.. nextnya diganti ama file..
            // udah gw buat subrutinnya, tinggal pake.. -- mufid
            int[][] matriks;

            String masukan1 = sken.next();   // baca keseluruhan
            String[] pisah = masukan1.split("\\s");
			
			// Atur ukuran square matrix
            matriks = new int[pisah.length][];
            for (int i = 0; i < pisah.length; i++) {
                matriks[i] = new int[pisah.length];
            }
			
			// Baca baris pertama
			matriks[0] = getIntDariString(pisah);
			
			// Baca baris selanjutnya :p
			String untukDipisah;
			for (int bariske = 1; bariske < matriks.length; bariske++) {
				matriks[bariske] = getIntDariString(
									sken.next().split("\\s")
				);
			}

            // Mulai subrutin
            matcek = new MatrixChecker(matriks);

            // Kalau oke, langsung keluar dari barisan try-catch
        } catch (Exception ex) {
            // Jika terjadi kesalahan, sudah pasti karena satu di bawah ini:
            // - salah masukin angka
            // - tidak square matrix
			System.out.println("Terjadi kesalahan dalam program");
        }
		
        // Jika matcek adalah null, artinya belum diset, berarti ada kesalahan
        // di atas. Maka keluar dari program jika demikian
        if (matcek == null) {
            System.out.println("Matriks tidak valid!");
            System.exit(1); 
        } else {
			doItung(matcek);
		}
    }
	/*
  String getBaris(IO file) {
    return apa gitu
    }
    String getBaris(Scanner sken) {
      return sken.next();
    }*/
    
	int[] getIntDariString(String[] str) {
		int[] retval;
		retval = new int[str.length];
		for (int i = 0; i < str.length; i++) {
			retval[i] = Integer.parseInt(str[i]);
		}
		
		return retval;
	}
	
	/** Untuk menghitung matrix */
	void doItung(MatrixChecker matcek) {
		boolean __a;
		
		// template
		__a = matcek.sesuatu();
		if (__a) {
			System.out.println("Matriksnya memilik sifat __a");
		}
		
		
	}
}
